package br.com.manutencaocarro.dao;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import br.com.manutencaocarro.modelo.Loja;
import br.com.manutencaocarro.modelo.Peca;

public class LojaDAO 
{
	private DatabaseHelper helper;

	public LojaDAO( Context context ) {
		helper = new DatabaseHelper(context);
	}

	public void cadastraLoja( Loja loja )
	{
		ContentValues values = new ContentValues();

		new DatabaseHelper.Loja();
		values.put( DatabaseHelper.Loja.NOME, loja.getNome_loja() );
		values.put( DatabaseHelper.Loja.ENDERECO_LOJA, loja.getEnd_loja() );
		values.put( DatabaseHelper.Loja.NUMERO_LOJA, loja.getNumero_loja() );
		values.put( DatabaseHelper.Loja.NOME_VENDEDOR, loja.getNome_vendedor() );
		values.put( DatabaseHelper.Loja.TEL_CONTATO, loja.getTel_contato() );
		values.put( DatabaseHelper.Loja.NOTA_ATENDIMENTO, loja.getNota_atendimento() );
		values.put( DatabaseHelper.Loja.DATA_CADASTRO, new Date( new java.util.Date().getTime() ).toString() );
		
		helper.getWritableDatabase().insert( DatabaseHelper.Loja.TABELA, null, values );
	}
	
	public void atualizaLoja( Loja loja )
	{
		ContentValues values = new ContentValues();

		new DatabaseHelper.Loja();
		values.put( DatabaseHelper.Loja.NOME, loja.getNome_loja() );
		values.put( DatabaseHelper.Loja.ENDERECO_LOJA, loja.getEnd_loja() );
		values.put( DatabaseHelper.Loja.NUMERO_LOJA, loja.getNumero_loja() );
		values.put( DatabaseHelper.Loja.NOME_VENDEDOR, loja.getNome_vendedor() );
		values.put( DatabaseHelper.Loja.TEL_CONTATO, loja.getTel_contato() );
		values.put( DatabaseHelper.Loja.NOTA_ATENDIMENTO, loja.getNota_atendimento() );
		values.put( DatabaseHelper.Loja.DATA_CADASTRO, new Date( new java.util.Date().getTime() ).toString() );
		
		String[] args = {loja.getId_loja().toString()};
		helper.getWritableDatabase().update( DatabaseHelper.Loja.TABELA, values, DatabaseHelper.Loja.ID_LOJA + "=?", args );
	}
	
	public void close(){
		helper.close();
	}

	public List<Loja> getLoja( int idLoja ) 
	{
		String[] args = { String.valueOf(idLoja) };
		Cursor cursor = helper.getWritableDatabase().query( DatabaseHelper.Loja.TABELA, DatabaseHelper.Loja.COLUNAS, DatabaseHelper.Loja.ID_LOJA + "=?", args, null, null, null );
		
		ArrayList<Loja> lojas = new ArrayList<>();
		
		while( cursor.moveToNext() )
		{
			Loja loja = new Loja();
			
			loja.setId_loja(cursor.getInt(0));
			loja.setNome_loja(cursor.getString(1));
			loja.setEnd_loja(cursor.getString(2));
			loja.setNumero_loja(cursor.getInt(3));
			loja.setNome_vendedor(cursor.getString(4));
			loja.setTel_contato(cursor.getString(5));
			loja.setNota_atendimento(cursor.getDouble(6));
			loja.setDataCadastro( new Date(cursor.getLong(7)));
			
			lojas.add(loja);
		}
		
		return lojas;
	}
	
	public List<Loja> getLista() 
	{
		Cursor cursor = helper.getWritableDatabase().query( DatabaseHelper.Loja.TABELA, DatabaseHelper.Loja.COLUNAS, null, null, null, null, null );
		
		ArrayList<Loja> lojas = new ArrayList<>();
		
		while( cursor.moveToNext() )
		{
			Loja loja = new Loja();
			
			loja.setId_loja(cursor.getInt(0));
			loja.setNome_loja(cursor.getString(1));
			loja.setEnd_loja(cursor.getString(2));
			loja.setNumero_loja(cursor.getInt(3));
			loja.setNome_vendedor(cursor.getString(4));
			loja.setTel_contato(cursor.getString(5));
			loja.setNota_atendimento(cursor.getDouble(6));
			loja.setDataCadastro( new Date(cursor.getLong(7)));
			
			lojas.add(loja);
		}
		
		return lojas;
	}

	public void deleta(Loja loja) 
	{
		new DatabaseHelper.Carro();
		String[] args = {loja.getId_loja().toString()};
		PecaDAO dao = null;
		try {
			dao = new PecaDAO( helper.getCONTEXT() );
			List<Peca> lista = dao.getLista(loja.getId_loja());
			
			
			if( lista.size() > 0 )
			{
				helper.getWritableDatabase().delete( DatabaseHelper.Peca.TABELA, DatabaseHelper.Loja.ID_LOJA + "=?", args );
			}
			
			helper.getWritableDatabase().delete( DatabaseHelper.Loja.TABELA, DatabaseHelper.Loja.ID_LOJA + "=?", args );
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if( dao != null )
				dao.close();
			
			if( helper != null )
				helper.close();
		}
	}
}